entry completion: Stop using key-press/release-event
authorMatthias Clasen <mclasen@redhat.com>
Tue, 23 Jan 2018 23:02:58 +0000 (00:02 +0100)
committerMatthias Clasen <mclasen@redhat.com>
Wed, 24 Jan 2018 11:04:27 +0000 (12:04 +0100)
We can use the existing ::event handler for this.

gtk/gtkentrycompletion.c

index c80f8b00616277415f6736f07c8798274dec168a..7dcd7e54bd8eb8f4550977a0371d0321fbfc3895 100644 (file)
@@ -139,9 +139,6 @@ static void     gtk_entry_completion_dispose             (GObject      *object);
 static gboolean gtk_entry_completion_visible_func        (GtkTreeModel       *model,
                                                           GtkTreeIter        *iter,
                                                           gpointer            data);
-static gboolean gtk_entry_completion_popup_key_event     (GtkWidget          *widget,
-                                                          GdkEventKey        *event,
-                                                          gpointer            user_data);
 static gboolean gtk_entry_completion_popup_event         (GtkWidget          *widget,
                                                           GdkEvent           *event,
                                                           gpointer            user_data);
@@ -597,12 +594,6 @@ gtk_entry_completion_constructed (GObject *object)
   gtk_window_set_type_hint (GTK_WINDOW(priv->popup_window),
                             GDK_WINDOW_TYPE_HINT_COMBO);
 
-  g_signal_connect (priv->popup_window, "key-press-event",
-                    G_CALLBACK (gtk_entry_completion_popup_key_event),
-                    completion);
-  g_signal_connect (priv->popup_window, "key-release-event",
-                    G_CALLBACK (gtk_entry_completion_popup_key_event),
-                    completion);
   g_signal_connect (priv->popup_window, "event",
                     G_CALLBACK (gtk_entry_completion_popup_event),
                     completion);
@@ -897,22 +888,6 @@ gtk_entry_completion_visible_func (GtkTreeModel *model,
   return ret;
 }
 
-static gboolean
-gtk_entry_completion_popup_key_event (GtkWidget   *widget,
-                                      GdkEventKey *event,
-                                      gpointer     user_data)
-{
-  GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data);
-
-  if (!gtk_widget_get_mapped (completion->priv->popup_window))
-    return FALSE;
-
-  /* propagate event to the entry */
-  gtk_widget_event (completion->priv->entry, (GdkEvent *)event);
-
-  return TRUE;
-}
-
 static gboolean
 gtk_entry_completion_popup_event (GtkWidget *widget,
                                   GdkEvent  *event,
@@ -920,6 +895,18 @@ gtk_entry_completion_popup_event (GtkWidget *widget,
 {
   GtkEntryCompletion *completion = GTK_ENTRY_COMPLETION (user_data);
 
+  if (gdk_event_get_event_type (event) == GDK_KEY_PRESS ||
+      gdk_event_get_event_type (event) == GDK_KEY_RELEASE)
+    {
+      if (!gtk_widget_get_mapped (completion->priv->popup_window))
+        return GDK_EVENT_PROPAGATE;
+
+      /* propagate event to the entry */
+      gtk_widget_event (completion->priv->entry, (GdkEvent *)event);
+
+      return GDK_EVENT_STOP;
+    }
+
   if (gdk_event_get_event_type (event) != GDK_BUTTON_PRESS)
     return GDK_EVENT_PROPAGATE;